/**
 * 
 */
package com.wsd.service;

import java.util.List;

import com.wsd.bean.ProductComment;
import com.wsd.bean.Products;

/**
 * @author TuZiJun
 *
 */
public interface ProductService {

	/**根据产品id查找产品
	 * @param pid 产品id
	 * @return 
	 */
	Products findById(int pid);

	/**
	 * 根据产品类别查找该类别一页的产品
	 * @param page
	 * @param pageSize
	 * @param cid
	 * @return
	 */
	List<Products> categoryProducts(int page, int pageSize, int cid);

	/**
	 * 根据关键字获取包含该关键字产品信息的总页数
	 * @param pageSize
	 * @param keyWord
	 * @return
	 */
	int getTotalPages(int pageSize, String keyWord);

	/**
	 * 根据关键字查找包含该关键字的一页产品
	 * @param page
	 * @param pageSize
	 * @param keyWord
	 * @return
	 */
	List<Products> searchProducts(int page, int pageSize, String keyWord);

	/**
	 * 获取所有产品的总页数
	 * @param pageSize
	 * @return
	 */
	int getTotalPages(int pageSize);

	/**
	 * 获取一页的产品
	 * @param page
	 * @param pageSize
	 * @return
	 */
	List<Products> findOnePage(int page, int pageSize);

	/**
	 * 根据类别id获取产品的总页数
	 * @param pageSize
	 * @param cid
	 * @return
	 */
	int getTotalPages(int pageSize, int cid);
	
	/**
	 * 取得类别下商品总数
	 * @param cid
	 * @return
	 */
	public int getProductCount(int cid);
	//xiaoe
	public void save(Products product);
	/**
	 * 删除商品
	 * @param ids
	 */
	public void deleteProduct(int[] ids);

	/**
	 * 更新商品
	 * @param product
	 */
	void update(Products product);

	/**
	 * 删除价格
	 * @param preProduct
	 */
	void deletePrice(Products preProduct);

	/**
	 * @param ids
	 * @param model
	 */
	void saveRank(int[] ids, Short model);

	/**
	 * @param model
	 * @return
	 */
	int rankProductsCount(Short model);

	/**
	 * @param model
	 * @param start
	 * @param limit
	 */
	List<Products> rankProducts(Short model, int start, int limit);

	/**
	 * @param ids
	 * @param model
	 */
	void deleteRank(int[] ids, Short model);

	/**
	 * @param model
	 * @param num 
	 * @return
	 */
	List<Products> rankByModel(short model, int num);

	/**
	 * @param comment
	 */
	void saveComment(ProductComment comment);

	/**
	 * @param comment
	 * @param page
	 * @param pagesize
	 * @return
	 */
	List<ProductComment> findByComment(ProductComment comment, int page,
			int pagesize);

	/**
	 * @param comment
	 * @param pagesize 
	 * @return
	 */
	int findByCommentCount(ProductComment comment, int pagesize);

	/**
	 * @param pid
	 */
	void deleteComment(int pid);

	/**
	 * @return
	 */
	int findAllCommentsCount();

	/**
	 * @param i
	 * @param j
	 * @return
	 */
	List<ProductComment> findAllComments(int i, int j);

}
